A computer-implemented simulation seeks to imitate the operation of a real-world process or system over time based on a model. A simulation can analyze the behavior of an assembly comprising multiple bodies within a simulation as those bodies interact with one another and the environment. A typical assembly comprises a collection of bodies, where each body is a collection of entities that can include faces, edges, and vertices. Interactions between bodies can differ based on whether faces within a collection of bodies are in contact or not. A “contact” is established when the faces (minimally 2) are in close proximity to each other within a certain tolerance. If the tolerance is made quite large (e.g., larger than the size of bodies), traditional contact detection algorithms can incorrectly assume all bodies in contact. Identification of contact between bodies/faces in a simulation is often a time consuming, manual process. There are algorithms to do auto-contact detection however the quality of the contacts determined from these algorithms remains a research topic. As a result in industry people more often either define their contacts manually, a large time consuming process, or use the auto-detected contacts as a starting point and adjust the contact definitions manually, which can still be a time consuming process.